package hocusPocus.Controllers;

import hocusPocus.IHM.ChoixFinTour;
import hocusPocus.IHM.InterfacePlateau;
import hocusPocus.IHM.LimiteCarteMain;
import hocusPocus.Partie.Plateau;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

public class ControllerChoixFinTour implements ActionListener {
	private ChoixFinTour choixFinTour;
	private InterfacePlateau interfacePlateau;
	private Plateau plateau;

	public ControllerChoixFinTour(ChoixFinTour choixFinTour, InterfacePlateau interfacePlateau) {
		this.choixFinTour = choixFinTour;
		this.interfacePlateau = interfacePlateau;
		this.plateau = Plateau.getInstance();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == choixFinTour.cartes){
			ChoixFinTour.piocherCarte = true;
			ChoixFinTour.piocherGemmes = false;
		}
		if(e.getSource() == choixFinTour.gemme){
			ChoixFinTour.piocherCarte = false;
			ChoixFinTour.piocherGemmes = true;
		}
		if(e.getSource() == choixFinTour.ok){	      	
			if(ChoixFinTour.piocherGemmes == false && ChoixFinTour.piocherCarte == false)
				JOptionPane.showMessageDialog(null,"Erreur : pas de pioche choisie", "Erreur", JOptionPane.ERROR_MESSAGE);
			else{
				if(ChoixFinTour.piocherGemmes) {
					System.out.println("Selection : pioche gemme");
					plateau.getJoueurCourant().ajouterUnGemme(plateau.getChaudron().piocherUnGemme());
				}
				else {
					System.out.println("Selection : pioche cartes");
					plateau.getJoueurCourant().ajouterCartesMain(plateau.getBibliotheque().piocherCarte(2));
					if(plateau.getJoueurCourant().getMain().size() > 5) {
						new LimiteCarteMain(interfacePlateau);
					}

				}
				plateau.joueurSuivant(plateau.getJoueurCourant()); // Changement de joueur courant
				plateau.setJoueurReagissant(plateau.getJoueurCourant());
				plateau.defausserZDJ(); // ON VIDE LA ZDJ POUR LE MOMENT
				choixFinTour.dispose();	
				ChoixFinTour.piocherCarte = false;
				ChoixFinTour.piocherGemmes = false;
			}
			JOptionPane.showMessageDialog(null, "A " + plateau.getJoueurCourant().getNom() + " de jouer.");
			interfacePlateau.rafraichirPlateauEntier();
		}	
	}	
}


